home *** CD-ROM | disk | FTP | other *** search
- BOO FILE FORMAT, ENCODING AND DECODING
-
- Many Kermit programs are often distributed using a special encoding called
- "boo" (short for "bootstrap") format, developed especially for distribution of
- Kermit binaries over networks, e-mail, and communication lines.
-
- A common practice is to encode .EXE and other binary files into printable
- characters, such as hexadecimal digits, for transportability. A simple "hex"
- encoding results in two characters per 8-bit binary byte, plus CRLFs added
- every 80 (or less) hex characters to allow the file to pass through
- card-oriented networks like BITNET. A hex file is therefore more than twice
- as large as the original binary file.
-
- A .BOO file is a more compact, but somewhat more complicated, encoding. Every
- three binary bytes (24 bits) are split up into four 6-bit bytes with 48 (ASCII
- character "0") added to each, resulting in four ASCII characters ranging from
- "0" (ASCII 48) to "o" (ASCII 111), with CRLFs added at or near "column 76".
- The resulting file size would therefore be about 4/3 the .EXE file size. This
- is still quite large, so .BOO files also compress consecutive null (zero)
- bytes. Up to 78 consecutive nulls are compressed into two characters. Tilde
- ("~") is the null-compression lead-in, and the following character indicates
- how many nulls are represented (subtract 48 from this character's ASCII
- value). For instance "~A" means 17 consecutive nulls; "~~" means 78 of them.
- Repeated nulls are very common in binary executable files.
-
- 4-for-3 encoding combined with null compression reduces the size of the
- encoded file to approximately the same size as the original .EXE file, and
- sometimes even smaller. The first line of a .BOO file is the name (in plain
- text) of the original file. Here's what the first few lines of a typical .BOO
- file look like:
-
- CKERMIT.EXE
- CEYP0Id05@0P~3oomo2Y01FWeP8@007P000040HB4001`W~28bL005\W~2JBP00722V0ZHPYP:
- \8:H2]R2V0[`PYP:68>H2S23V0YHPiP:Xg800;Qd~2UWD006Yg~2Ogl009]o~2L8000;20~~~~
- ~~~~~~~:R2H008TV?P761T410<H6@P40j4l6RRH0083l17@PP?`1M@?YSP20o0Ee0nUD0h3l
- 1WD3jO@3]0VjW03=8L?X4`N0o01h1\H6~20l>0i7n0o1]e7[@2\PO=8LH60@00Raj>04^97Xh0
-
- Executable C-Kermit programs are distributed in BOO format for the Commodore
- Amiga, OS/2, and possibly others. BOO format is also used for MS-DOS Kermit,
- Microsoft Windows Kermit, and other Kermit versions that are not part of
- C-Kermit.
-
- The program for converting a binary executable (or any other) file into
- BOO format is:
-
- CKBMKB.C
-
- Compile this program using your C compiler and then run it, giving the name
- of the input (binary) and output (boo) files as a command-line arguments, for
- example:
-
- ckbmkb ckermit.exe ckermit.boo
-
- The program for converting a BOO file back into its original form (such as
- binary executable) is:
-
- CKBUNB.C
-
- Compile this program using your C compiler and then run it, giving the name
- of the input (boo) file as a command-line argument, for example:
-
- ckbunb ckermit.boo
-
- This will re-create the file with its original name (as stored in the first
- line of the BOO file).
-
- These two programs are identical to the MSBMKB and MSBPCT programs that are
- distributed with MS-DOS Kermit. BOO-file makers and decoders are also
- available in other languages (Fortran, Pascal, Assembler, etc) in the MS-DOS
- Kermit file collection under the MSB prefix.
-